package com.developmentReformProject.dao;

/***********************************************************************
 * Module:  AdminDao.java
 * Author:  刘子儒
 * Purpose: Defines the Interface AdminDao
 ***********************************************************************/

import com.developmentReformProject.dto.AdminDto;
import com.developmentReformProject.dto.AdminQueryDto;
import com.developmentReformProject.entity.Admin;
import com.developmentReformProject.entity.Apply;
import com.developmentReformProject.entity.Enterprise;
import com.developmentReformProject.utils.PageUtil;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.*;
@Mapper
/** @pdOid b98ddca4-a685-4aa7-bb9c-d34263341f13 */
public interface AdminDao extends BaseDao {
    /**
     * 添加管理员
     * @param
     */
    void addAdmin(Admin admin);

    /**
     * 修改管理员信息
     * @param
     */
    void updateAdmin(Admin admin);

    /**
     * 通过管理员编号批量删除管理员
     * @param
     * @param adminNos
     */
    void deleteAdminBatch(int[] adminNos);

    /**
     * 通过管理员编号删除管理员
     * @param
     * @return
     */
    void deleteAdmin(Integer adminNo);

    /**
     * 通过管理员编号查找管理员
     * @param
     * @return
     */
    Admin queryAdmin(Integer adminNo);

    /**
     * 按权限查询管理员
     * @param adminPower
     * @return
     */
    Admin queryAdminByPower(Integer adminPower);

    /**
     * 管理员修改自己密码
     * @param
     */
    void updateAdminPassword(@Param("adminAccountNumber") String accountNumber,@Param("adminPassword") String newPassword);

    /**
     * 查询所有管理员
     * @return
     */
    List<Admin> queryAllAdmin();

    /**
     * 查询所有在职管理员
     * @return
     */
    List<Admin> queryAllStateAdmin();

    /**
     * 查询所有状态正常公司
     * @return
     */
    List<Enterprise> queryAllEnterprise();

    /**
     * 查询账号密码
     * @return
     */
    Admin adminLogin(@Param("adminAccountNumber") String adminAccountNumber, @Param("adminPassword") String adminPassword);

    /**
     * 动态统计
     * @param
     * @return
     */
    int countSelective(AdminQueryDto adminQueryDto);

    /**
     * 动态查询
     * @param
     * @return
     * @throws Exception
     */
    public List<Admin> selectSelective(AdminQueryDto adminQueryDto) throws Exception;

    /**
     * 查找密码
     * @param adminAccountNumber
     * @return
     */
    public String queryPassword(String adminAccountNumber);

    /**
     * 查询
     * @return
     */
    public Apply queryAuditStatus();
    public Admin queryByUsername(String adminAccountNumber);

    public void cleanAdmin(int adminNo);
    public List<Admin> listDelete(AdminQueryDto adminQueryDto);
    int countClean(AdminQueryDto adminQueryDto);
}
